package cn.tanghom.app.oa.service;

import cn.tanghom.app.oa.model.Candidate;
import cn.tanghom.app.oa.model.Leave;
import cn.tanghom.app.oa.model.Position;
import cn.tanghom.app.oa.model.Talent;
import cn.tanghom.support.page.Pager;

import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Map;

/**
 * 招聘业务实现，
 * 版本一：由职位触发。更新职位，发布新职位
 * 
 * 版本二：由简历触发。推荐拒绝，上传简历
 *
 * @author tanghom<tanghom@qq.com> on 2016/6/30
 */
public interface RecruitmentProcessService {

    /**
     * 发布职位
     *
     * @param leave
     */
    void save(Position pos);

    /**
     * 更新保存
     *
     * @param leave
     */
    void update(Position pos);

    /**
     * 根据iD删除招聘职位
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 根据ID查询职位
     *
     * @param id
     * @return
     */
    Position findById(Long id);

    /**
     * 按条件查询所有职位
     *
     * @return
     */
    Page<Position> findPageByUserId(Long userId, Integer status, Long index);

    /**
     * 根据职位触发招聘流程
     * @param entity
     * @param variables
     * @return
     */
    ProcessInstance startWorkflow(Position entity, Map<String, Object> variables);
    
    
    /**
     * 根据职位和人才触发面试流程
     * @param entity
     * @param variables
     * @return
     */
    ProcessInstance startWorkflow(Candidate entity, Map<String, Object> variables);
    
    /**
     * 获取部门经理的任务
     * @param userid
     * @param firstrow
     * @param rowcount
     * @return
     */
    public List<Position> getPageDeptTask(String userid,int firstrow,int rowcount);
	
	/**
     * 获取HR部门的任务
     * @param userid
     * @param firstrow
     * @param rowcount
     * @return
     */
	public List<Position> getPageHrTask(String userid,int firstrow,int rowcount);
	
	public void updateComplete(String taskid, Position leave,String reappply);
	
}
